package com.gdawj.ejb;

import java.util.concurrent.Future;
import javax.annotation.Resource;
import javax.ejb.AsyncResult;
import javax.ejb.Asynchronous;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.ejb.Schedule;
import javax.ejb.Schedules;
import javax.ejb.SessionContext;

@Stateless
@LocalBean
public class EnvoiEmailEJB {

    @Resource
    SessionContext sc;

    @Asynchronous
    public Future<Integer> envoiEmail()
    {
        Integer etat=0;

        try
        {
            // avant traitement
            Thread.sleep(3000);

            if(sc.wasCancelCalled()){
                etat=2;
                return new AsyncResult<Integer>(etat);
            }

            // apres traitement
            etat=2;
            return new AsyncResult<Integer>(etat);
        }
        catch (Exception ex)
        {
            // en cas d'erreur
            etat=3;
            return new AsyncResult<Integer>(etat);
        }
    }


    // envoyer les absences des etudiants toutes les minutes tous les jours
    @Schedule(minute="*",hour="*")
    public void envoyerAbsencesEtudiant()
    {
        System.out.println("Envoyer la liste des absences des étudiants");
    }

    // envoyer les informations relatives aux absences des enseignants
    @Schedules({
        @Schedule(hour="22"),
        @Schedule(hour="23",minute="59",dayOfWeek="Wed",persistent=false)
    })
    public void envoyerAbsencesEnseigant()
    {
        System.out.println("Envoyer la liste des absences des enseignants");
    }


}
